//扫描类
export default class Scanner {
    constructor(tempStr) {
        // console.log(tempStr);
        // 定义模板字符串
        this.tempStr = tempStr
        // 定义指针
        this.pos = 0;
        // 定义一个尾巴（未扫描的模板字符串）,一开始就是模板字符串
        this.tail = tempStr;
    }
    // 路过指定内容，如：跳过{{}}
    scan(tag) {
        if (this.tail.indexOf(tag) == 0) {
            // tag有多长，就让指针后移几位
            this.pos += tag.length;
            // 改变尾巴
            this.tail = this.tempStr.substring(this.pos)
        }
    }
    /*
        让指针进行扫描，直到遇见指定内容结束，并返回扫描过的文字
        stopTag:停止标志
    */
    scanUntil(stopTag) {
        // 记录执行本方法的pos值
        const pos_backup = this.pos;
        // 当尾巴的开头不是stopTag，就说明还没扫描到stopTag
        // 写&& this.pos < this.tempStr.length条件，防止到不到，那么找最后也要停止
        while (!this.eos() && this.tail.indexOf(stopTag) != 0) {
            this.pos++;
            this.tail = this.tempStr.substring(this.pos); //改变尾巴，为包括指针之后的字符串
        }
        return this.tempStr.substring(pos_backup, this.pos); //substring(开始位置，当前位置)
    }
    // 判断指针是否到结尾
    eos() {
        return this.pos >= this.tempStr.length
    }
}